home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / kernel / sys / sysCode.c < prev    next >
C/C++ Source or Header  |  1992-12-18  |  4KB  |  156 lines

  1. /* 
  2.  * sysCode.c --
  3.  *
  4.  *    Miscellaneous routines for the system.
  5.  *
  6.  * Copyright (C) 1985 Regents of the University of California
  7.  * All rights reserved.
  8.  */
  9.  
  10. #ifndef lint
  11. static char rcsid[] = "$Header: /cdrom/src/kernel/Cvsroot/kernel/sys/sysCode.c,v 9.4 92/06/15 22:29:24 jhh Exp $ SPRITE (Berkeley)";
  12. #endif not lint
  13.  
  14. #include <sprite.h>
  15. #include <dbg.h>
  16. #include <sys.h>
  17. #include <sysInt.h>
  18. #include <rpc.h>
  19. #include <sync.h>
  20. #include <sched.h>
  21. #include <vm.h>
  22. #include <net.h>
  23. #include <stdio.h>
  24.  
  25. /*
  26.  * Should be in some header file?
  27.  */
  28. extern    void    SysInitSysCall();
  29.  
  30.  
  31.  
  32. /*
  33.  * ----------------------------------------------------------------------------
  34.  *
  35.  * Sys_Init --
  36.  *
  37.  *    Initializes system-dependent data structures.
  38.  *
  39.  *    The number of calls to disable interrupts is set to 1 for 
  40.  *    each processor, since Sys_Init is assumed to be called with 
  41.  *    interrupts off and to be followed with an explicit call to 
  42.  *    enable interrupts.
  43.  *
  44.  *    Until ENABLE_INTR() is called without a prior DISABLE_INTR() (i.e.,
  45.  *    when it is called outside the context of a MASTER_UNLOCK), interrupts
  46.  *    will remain disabled.
  47.  *
  48.  * Results:
  49.  *    None.
  50.  *
  51.  * Side effects:
  52.  *    For each processor, the number of disable interrupt calls outstanding
  53.  *    is initialized.  
  54.  *
  55.  * ----------------------------------------------------------------------------
  56.  */
  57.  
  58. void 
  59. Sys_Init()
  60. {
  61.     SysInitSysCall();
  62.     strcpy(sys_HostName, "unknown");
  63. }
  64.  
  65. /*
  66.  *----------------------------------------------------------------------
  67.  *
  68.  * Sys_GetHostId --
  69.  *
  70.  *    This returns the Sprite Host Id for the system.  This Id is
  71.  *    guaranteed to be unique accross all Sprite Hosts participating
  72.  *    in the system.  This is plucked from the RPC system now,
  73.  *    but perhaps should be determined from the filesystem.
  74.  *
  75.  * Results:
  76.  *    The Sprite Host Id.
  77.  *
  78.  * Side effects:
  79.  *    None.
  80.  *
  81.  *----------------------------------------------------------------------
  82.  */
  83. int
  84. Sys_GetHostId()
  85. {
  86.     return(rpc_SpriteID);
  87. }
  88.  
  89. /*
  90.  *----------------------------------------------------------------------
  91.  *
  92.  * Sys_HostPrint --
  93.  *
  94.  *    Print out a statement concerning a host.  This maps to a
  95.  *    string hostname if possible, and prints out the message.
  96.  *
  97.  * Results:
  98.  *    None.
  99.  *
  100.  * Side effects:
  101.  *    printf.
  102.  *
  103.  *----------------------------------------------------------------------
  104.  */
  105.  
  106. static int lastDay[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
  107.  
  108. void
  109. Sys_HostPrint(spriteID, string)
  110.     int spriteID;
  111.     char *string;
  112. {
  113.     char hostName[128];
  114.     Time time;
  115.     int offset;
  116.     int seconds;
  117.     Boolean dstFlag;
  118.     Time_Parts timeParts;
  119.  
  120.     Timer_GetTimeOfDay(&time, &offset, &dstFlag);
  121.     seconds = time.seconds + offset * 60;
  122.     Time_ToParts(seconds, FALSE, &timeParts);
  123.     /*
  124.      * Until Time_ToParts makes the month count from 1, not zero.
  125.      */
  126.     timeParts.month += 1;
  127.     /*
  128.      * Gag, my own (simplified) daylight savings correction.
  129.      */
  130.     if (dstFlag) {
  131.     if ((timeParts.month >= 4) &&    /* All of April */
  132.         (timeParts.month <= 10)) {    /* thru October */
  133.         timeParts.hours++;
  134.         if (timeParts.hours >= 24) {
  135.         timeParts.hours = 0;
  136.         timeParts.dayOfMonth++;
  137.         if (timeParts.dayOfMonth > lastDay[timeParts.month]) {
  138.             timeParts.month++;
  139.             timeParts.dayOfMonth = 1;
  140.         }
  141.         }
  142.     }
  143.     }
  144.     printf("%d/%d/%d %d:%02d:%02d ", timeParts.month, timeParts.dayOfMonth,
  145.         timeParts.year, timeParts.hours, timeParts.minutes,
  146.         timeParts.seconds);
  147.  
  148.     Net_SpriteIDToName(spriteID, 128, hostName);
  149.     if (*hostName == '\0') {
  150.     printf("Sprite Host <%d> %s", spriteID, string);
  151.     } else {
  152.     printf("%s (%d) %s", hostName, spriteID, string);
  153.     }
  154. }
  155.  
  156.